计划阅读调试下Dubbo的源码,结合官方源码分析Dubbo,自身再分析总结
本文对应的Dubbo 服务导出
源码分析
大部分服务导出之后需要注册到注册中心,以利于服务治理等。
1 | public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcException { |
以Zookeeper为例,从registerURL中获取到的protocol字段为zookeeper。继续进入ZookeeperRegisterFactroy中
1 | public class ZookeeperRegistryFactory extends AbstractRegistryFactory { |
这段逻辑比较简单,继续进入ZookeeperRegistry中。
1 | public ZookeeperRegistry(URL url, ZookeeperTransporter zookeeperTransporter) { |
上面的代码逻辑也比较简单,主要进入zookeeperTransporter#connect方法
1 | "curator") // 默认为CuratorZookeeperTransporter ( |
继续进入CuratorZookeeperTransporter中
1 | public class CuratorZookeeperTransporter extends AbstractZookeeperTransporter { |
上面的逻辑也比较简单,connect的流程主要在创建zookeeper客户端,之后都是缓存操作
继续跟进,CuratorZookeeperClient
1 | public CuratorZookeeperClient(URL url) { |
上面的逻辑还是很清晰的,目的就是在创建Zookeeper客户端。回到开始的部分,创建好客户端之后就是注册zookeeper。进入到ZookeeperRegistry的register方法中
1 |
|
failover是指出错重试的策略。
进入ZookeeperRegistry#doRegister方法
1 |
|